System and method of reading bar code with two scanning beams

ABSTRACT

A method of the invention reads a bar code based on bar-code data obtained by scanning the bar code with light. The method includes the steps of a) obtaining bar-code data, b) obtaining a sum of bar-data widths with respect to a predetermined number of bar data provided in at least one of a preceding portion and a following portion of the bar-code data, c) repeating the steps a) and b) once to obtain another sum, and d) making a comparison of the sum with another sum. The methods further includes a step of accepting the bar-code data as valid data when a result of the comparison satisfies a predetermined condition.

This application is a continuation of application Ser. No. 09/356,024,filed Jul. 16, 1999, now USP 6,189,796, which in turn is division ofapplication Ser. No. 08/989,834 filed Dec. 12, 1987, now USP6,142,377.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention generally relates to methods of reading bar codesand bar-code reading devices, and particularly relates to a method ofreading bar codes and a bar-code reading device which is equipped with ahand-held bar-code reader using a laser light.

In recent years, laser-based bar-code readers have been widely used asoften seen in POS (point of sales) systems in a distribution industry,and such readers are generally fixed to a check-out counter whileallowing bar codes to be read in a non-contacting manner. An everincreasing range of products requires diversified use of such bar-codereaders. Efforts thus have been directed to development of a hand-heldbar-code reader, which can be picked up from a fixed position on thecounter where it is used as a fixed-type bar-code reader, in order tocope with a variety of products at the check-out counter.

2. Description of the Prior Art

Hand-held bar-code readers are often used for reading bar-code menus.

The bar-code menus are useful when bar-code labels cannot be attached tosome types of products. When unlabeled products need to be processed, abar-code reader is used for reading bar codes on a separate bar-codemenu which gives a list of the unlabeled products. Bar-code readers forreading the bar-code menus typically include a pen-type bar-code readerand a touch-scanner-type bar-code reader, which have a relatively short(sensor) readable range. Because of the short readable range, thesetypes of bar-code readers need to come in-contact with bar codes inorder to read the bar codes.

On the other hand, laser-based bar-code readers are characterized byhaving a long (sensor) readable range. The long readable range allowsthe laser-based bar-code readers fixedly mounted on check-out countersto read bar codes when products with bar-code labels are shown, i.e.,exposed or presented to a scan window of the readers. These bar-codereaders can read bar codes as long as the bar codes are presented withina certain range from the scan window. Operators do not have to be overlysensitive about positions of products when showing the products withbar-code labels to the bar-code readers. This type of bar-code reader issuitable for reading a go large number of bar codes in a short period oftime.

Recent development of technology has made it possible to createlaser-based bar-code readers which are normally mounted to a counter,but can also be used as hand-held readers as such a need arises. Thesebar-code readers are mounted to a counter table or the like to read barcodes when products with bar-code labels are processed. When there is aneed to read a separate bar-code menu with respect to unlabeled productsor there is a need to read a bar code attached to a heavy product whichcannot be held by hand over the scan window, the bar code reader isdetached from the counter table to read the bar-code menu or the barcode on the heavy product.

The laser-based hand-held bar-code readers have a long readable range asdo the fixedly mounted laser-based bar-code readers. When there is aneed to read a separate bar-code menu, what is expected most of the timeis to read only a couple of bar codes among many bar codes recorded onthe bar-code menu. Since an intended bar code is listed among other barcodes, use of bar-code readers having a long readable range may resultin reading other unnecessary bar codes along with the intended bar code.Further, even during a time when an operator brings a bar-code readercloser to the intended bar code, laser-scan light continues to beemitted from the scan window of the bar-code reader, ending up scanningirrelevant bar codes.

Some of the laser-based hand-held bar-code readers obviate this problemby making the sensor readable range shorter when the bar-code readersare used in a hand-held manner. With a shortened readable range,bar-code readers do not pick up unnecessary bar codes other than theintended bar code. When this configuration is used, however, the meritof the long readable range cannot be utilized to the full extent.Bar-code readers may be used for other purposes than reading a bar-codemenu, as in the case of a heavy product, wherein it is preferable tohave a long readable range to read a bar code from some distance. Suchdemand cannot be met if bar-code readers are limited to a short readablerange when picked up by hand.

Further, even with a shortened readable range, bar-code readers may pickup unnecessary bar codes because the readers keep emitting laser-scanlight from the scan window. Especially, when the bar-code readers arehandled carelessly, there is an increased chance of reading irrelevantbar codes.

Accordingly, there is a need for a method of reading bar codes and abar-code reading device which achieves reliable reading of bar codes ina hand-held operation while maintaining a long readable range.

SUMMARY OF THE INVENTION

Accordingly, it is a general object of the present invention to providea method of reading bar codes and a bar-code reading device which cansatisfy the need described above.

Also, it is a general object of the present invention to provide amethod of reading bar codes and a bar-code reading device which achievesreliable reading of bar codes in a hand-held operation while keeping along readable range.

In order to achieve the above object according to the present invention,a method of reading a bar code based on bar-code data obtained byscanning the bar code with light and by demodulating a reflected-lightsignal includes the steps of a) obtaining demodulated bar-code data, b)obtaining a sum of pulse widths with respect to a predetermined numberof pulses provided in at least one of a preceding portion and afollowing portion of the demodulated bar-code data, c) repeating thesteps a) and b) once to obtain another sum, and d) making a comparisonof the sum with another sum. The methods further includes a step ofaccepting the demodulated bar-code data as valid data when a result ofthe comparison satisfies a predetermined condition.

According to the method described in the above, a predetermined numberof pulses provided in a portion immediately preceding the bar-code dataand/or a portion immediately following the bar-code data are detected,and a sum of pulse widths of these pulses are calculated. The detectionof these pulses are due to margin portions, printed patterns,characters, shadows, etc., which surround the bar code. If the bar-codereader is in motion relative to the bar-code, the pulse widths of thepulses surrounding the bar-code data should vary as the detection anddemodulation of data are repeated. Because of this, a comparison of thesum obtained the first time with the sum obtained the second time makesit possible to decide whether the bar-code reader and the bar code arein relative motion.

According to one aspect of the present invention, a number as to howmany pulses are in existence, rather than the sum of the pulse widths,is used for deciding whether the bar-code reader exhibits a relativemotion against the bar code.

Further, the above-described method may be performed by a device forreading a bar code including a scan unit for emitting a first pattern ofscan beam and a second pattern of scan beam, and a unit for using thefirst pattern in a first mode and using the second pattern in a secondmode in order to read a bar code, the first pattern and the secondpattern being selected by a user operation.

According to one aspect of the present invention, the first pattern iscomprised of a plurality of scan beams, and the second pattern includesonly one scan beam. That is, the first pattern is suitable for use whenthe bar-code reader is mounted on a counter, and the second pattern isused when the bar-code reader is pick up by the hand to read a bar-codemenu or the like.

Other objects and further features of the present invention will beapparent from the following detailed description when read inconjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an embodiment of the present invention;

FIGS. 2A through 2C are illustrative drawings showing an appearance of abar-code reader according to the embodiment of the present invention;

FIGS. 3A and 3B are illustrative drawings showing a configuration of anoptical system used in the bar-code reader;

FIG. 4 is a flowchart of a process of reading a bar code according to anembodiment of the present invention;

FIG. 5 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention;

FIG. 6 is a flowchart of a process of reading a bar code according toyet another embodiment of the present invention;

FIG. 7 is a flowchart of a process of reading a bar code according tostill another embodiment of the present invention;

FIG. 8 is a flowchart of a process of reading a bar code according to afurther embodiment of the present invention;

FIG. 9 is a flowchart of a process of reading a bar code according to ayet further embodiment of the present invention;

FIG. 10 is a flowchart of a process of reading a bar code according to avariation of the embodiment of FIG. 9;

FIG. 11 is a flowchart of a process of reading a bar code according to avariation of the embodiment of FIG. 10;

FIG. 12 is a flowchart of a process which forms a core portion of thefollowing embodiments;

FIG. 13 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention;

FIG. 14 is a flowchart showing a variation of the embodiment of FIG. 12;

FIG. 15 is a flowchart of a process of reading a bar code according to avariation of the embodiment of FIG. 13;

FIG. 16 is a flowchart of a process which is a combination of theprocess of FIG. 12 and the process of FIG. 14;

FIG. 17 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention;

FIG. 18 is a flowchart of a process of reading a bar code according to avariation of the embodiment of FIG. 17;

FIG. 19 is a flowchart of a process of reading a bar code according to avariation of the embodiment of FIG. 17;

FIG. 20 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention;

FIG. 21 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention;

FIG. 22 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention; and

FIG. 23 is a flowchart of a process of reading a bar code according to avariation of the embodiment of FIG. 22.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

In the following, an embodiment of the present invention will bedescribed with reference to the accompanying drawings.

FIG. 1 is a block diagram of an embodiment of the present invention.

A bar-code reader 1 of the present invention is a laser-based bar-codereader, which illuminates bar codes by laser scanning, and detects lightreflected from the bar codes in order to identify the bar codes. Whenproducts with bar-code labels are processed, the products are onlyrequired to be brought closer to the scan window to allow the bar-codereader to identify the bar codes, thereby allowing the bar-code readerto be fixedly mounted on a counter table or the like. When a separatebar-code menu or a bar code of a product which cannot be brought closerto the scan window needs to be read, the bar-code reader is detachedfrom the counter table or the like, and the bar-code menu or the barcode of the product is read by operating the bar-code reader in ahand-held manner.

FIGS. 2A through 2C are illustrative drawings showing an appearance ofthe bar-code reader according to the embodiment of the presentinvention. FIG. 2A is a front view, and FIG. 2B is a side view. FIG. 2Cis a rear view.

The bar-code reader 1 of the embodiment includes a head unit 1 a and agrip unit 1 b. The grip unit 1 b may be mounted to a holder or the likewhen using the bar-code reader 1 in a fixed position operation.

The head unit 1 a includes a laser-emission part, a polygon mirror,mirrors for dividing a scan beam, and an optical detector. Laser-scanlight is emitted from the head unit 1 a via a scan window 1 c.

In the fixed position operation, products with bar-code labels arepassed over the scan window 1 c such that the bar-code labels are shownto the scan window 1 c.

In a hand-held operation, the bar-code reader 1 is brought closer to anintended bar code which is printed on a sheet or a label such that thescan window 1 c is closely positioned to the intended bar code.Alternately, another scan window id and a laser beam emitted therefrommay be used in the hand-held operation.

With reference back to FIG. 1, the bar-code reader 1 uses a laser diode2 to emit laser light L1. The laser light L1 is directed to a polygonmirror 3.

The polygon mirror 3 is rotated by a motor 4, and has a plurality ofreflection surfaces. The laser light L1 from the laser diode 2 isreflected and scanned by the polygon mirror 3, and is directed to amirror M. The mirror M includes a plurality of mirrors. Laser light L2,which is reflected by the mirror M, is emitted from the bar-code reader1 through a scan window 5.

FIGS. 3A and 3B are illustrative drawings showing a configuration of anoptical system used in the bar-code reader 1. FIG. 3A is a plane view,and FIG. 3B is a side view.

As shown in FIGS. 3A and 3B, the laser light L1 is scanned by thepolygon mirror 3, and directed to the mirror M as the laser light L2.The mirror M includes mirrors M1, M2, and M3. The laser light L2 whichis scanned by the polygon mirror 3 is reflected by the mirrors M1, M2,and M3, and becomes three beams B1, B2, and B3 in three differentdirections.

The motor 4 for rotating the polygon mirror 3 is provided with arotation sensor 23, which detects the rotation of the polygon mirror 3.The rotation sensor 23 generates a predetermined number of pulses whilethe motor 4 or the polygon mirror 3 makes one rotation.

A scan position of the laser light L2 can be identified by counting thepulses generated by the rotation sensor 23. In this manner, it can beknown as to which one of the beams B6, B2, and B3 is used for a giventime period of a scan.

With reference back to FIG. 1, the laser light L2 (beams B1, B2, and B3)emitted from the bar-code reader 1 is illuminated onto a bar code 7attached to a product 6. The bar code 7 has an arrangement of lightreflecting bars and light absorbing bars (with low reflectivity) whichis in accordance with a standard such as UPC (universal product code),EAN (European article code), or JAN (Japan article number) codes.

The laser light L2 is reflected by the bar code 7. Reflected light L3illuminates a photo-diode 8 after passing through the scan window 5. Thephoto-diode 8 generates an electric current in response to the reflectedlight L3.

The electric current generated by the photo-diode 8 is supplied to anamplifier 9. The amplifier 9 amplifies the electric current whichreflects an intensity of the reflected light L3.

A signal amplified by the amplifier 9 is supplied to an A/D converter(analog-to-digital converter) 10. The A/D converter 10 compares thesignal level supplied from the amplifier 9 with a reference level, andoutputs a pulse signal which becomes HIGH when the supplied signal levelexceeds the reference level, and becomes LOW when the supplied signallevel is smaller than the reference level. The pulse signal is providedto a bar-width counter 11. The bar-width counter 11 thus receives adigital pulse signal which is obtained from the reflected light L3 fromthe A/D converter 10, and, also, receives a clock signal from a clockgenerator 12.

The bar-width counter 11 counts a pulse width with respect to each ofthe HIGH levels and the LOW levels of the pulse signal by using theclock signal provided from the clock generator 12. The count numberswith respect to the HIGH levels and the LOW levels are supplied to a RAM14 via a direct-memory-access controller 13.

The RAM 14 is connected to a CPU 16 via a bus 15. The count numbersreflecting a pattern of the bar code 7 is supplied to the CPU 16 fromthe RAM 14. The CPU 16 performs a recognition process for identifyingthe detected bar code, which process will be described later in detail.The bar code identified by the CPU 16 is supplied to a POS system 19 viaan interface circuit 17 and an interface cable 18.

In addition to the RAM 14, the CPU 16, and the interface circuit 17,other elements are connected to the bus 15, including a timer 20, anonvolatile memory 21, and an input/output port 22. As will be describedlater, the CPU 16 performs the recognition process based on signalssupplied from the timer 20, the nonvolatile memory 21, and theinput/output port 22.

The input/output port 22 is connected to the rotation sensor 23 fordetecting a rotational position of the polygon mirror 3, a switch 24 forswitching between the fixed position operation and the hand-heldoperation, a light-emission diode 25 for displaying a status of therecognition process, and a buzzer 26 for indicating the success/failureof the bar-code recognition. These elements are controlled by therecognition process of the CPU 16.

The CPU 16 has two different read-operation modes, i.e., aconventional-read mode and a stationary-detection mode.

The conventional-read mode uses demodulated data stored in the RAM 14for the recognition process. Recognition results are transferred to thePOS system 19 via the interface circuit 17 and the interface cable 18.

The stationary-detection mode uses demodulated data stored in the RAM 14for the recognition process only when relative movement between thebar-code reader 1 and the bar code 7 is stopped. That is, data detectedwhile there is a relative movement is regarded as invalid data in thisstationary-detection mode.

The nonvolatile memory 21 stores data which indicates thestationary-detection mode. The data is stored in the nonvolatile memory21 by setting the CPU 16 to a data-write-operation mode before theswitching on of the device and by reading, during the conventional-readmode, a special bar code indicating the stationary-detection mode. Thesetting of the CPU to the data-write-operation mode is made by operatinga dip switch DS provided for the bar-code reader 1. Alternately, amode-shift bar code may be provided for indicating a change to thedata-write-operation mode. In this case, the mode-shift bar code may befed into the bar-code reader 1 to inform the CPU 16 of a mode change,and, then, the special bar code indicating the stationary-detection modemay be fed into the bar code reader 1.

Alternately, the special bar code may be input from the POS system 19 tothe bar-code reader 1 via the interface cable 18 and the interfacecircuit 17. Since the data of the special bar code is stored in thenonvolatile memory 21, the data will not be destroyed even when there isa power cut or the like.

As described above, the bar-code reader 1 is provided with the dipswitch DS. The dip switch DS is used for setting the CPU 16 to thedata-write-operation mode so as to store the special bar-code data inthe nonvolatile memory 21

FIG. 4 is a flowchart of a process of reading a bar code according to anembodiment of the present invention.

At a step S1 immediately after a start of a read operation, a check ismade whether a detected bar code is demodulated. If it is, the proceduregoes to a step S2. Otherwise, the step S1 is repeated.

At the step S2, a sum (A0) of J0 pieces of data is calculated, where theJ0 pieces of data are provided immediately before the demodulated barcode. In the example of FIG. 4, J0 is four, and A0 is a sum of theabove-mentioned count numbers with respect to the four pieces of data.

In what follows, a description will be given with regard to theabove-identified data immediately preceding the bar code.

A bar code is not surrounded by blank areas. First, margin portionscomplying with a relevant standard are provided in adjacent areas of thebar code. These margin portions are typically provided in a white color(i.e., a color which has a high reflectivity), and have a width definedby the relevant standard. Second, when the bar code is printed on apackage or the like of a product, surrounding areas outside the marginportions may have various printed patterns and characters.

The above-identified data preceding the bar code is comprised of thesemargin portions, patterns, characters, shadows, etc herein afterreferred to collectively as, variously, “surrounding patterns” and“patterns.” In general, bar-code readers compare intensity of reflectedlight from bar codes with a reference level, and identifies black barsand white bars of the bar codes in accordance with the results of thecomparison. This comparison is made not only for the bar codes, but alsofor surrounding patterns around the bar codes. The process at the stepS2 is concerned with processing of these surrounding patterns.

Even when only a blank area is provided around a bar code without anyprinted pattern, some patterns are detected in portions there orsurrounding, i.e., before and/or after, the bar-code data. This isbecause of shadows, coherent characteristics of laser beams, etc.

It should be noted that a distinction between a bar code and surroundingpatterns is easily made since the bar code has a special arrangement incompliance with a use standard.

With reference to FIG. 4 again, at a step S3, a check is made whetheranother bar code is demodulated. If it is, the procedure goes to a stepS4. Otherwise, the procedure goes to a step S8.

At the step S4, a check is made whether the bar code demodulated at thestep S1 and the bar code demodulated at the step S3 are obtained by thesame scan beam. As shown in FIG. 3, the bar-code reader 1 emits theplurality of beams in different directions. In this device, one of thebeams such as the beam B1 is allocated in advance as a beam to be usedfor reading a bar-code menu or the like. As previously described, therotation sensor 23 provided for the polygon mirror 3 can be used fordeciding which one of the beams is currently transmitted from thebar-code reader 1.

The “same scan beam”, which is referred to in connection with the stepS4, may mean the beam B1, for example, in the example of FIG. 3. Namely,the step S4 checks whether the bar code demodulated at the step S1 andthe bar code demodulated at the step S3 are obtained by the same beamB1. If they are obtained by the same scan beam, the procedure goes to astep S5. Otherwise, the procedure goes back to the step S3.

At the step S5, a check is made whether the demodulated data obtained atthe step S1 and the demodulated data obtained at the step S3 are thesame. If they are not, it is ascertained that the two demodulated dataare obtained as a result of demodulating two different bar codes. Thisindicates that there is a relative motion between the bar-code reader 1and the bar code 7. In this case, the procedure goes to a step S9. Ifthe two demodulated data are the same, the procedure goes to a step S6.

At the step S6, a sum (A1) of J1 pieces of data immediately precedingthe bar code of the step S3 is calculated. In this example, J1 is fouras in the step S2, and A1 is a sum of the count numbers with respect tothe four pieces of the data.

At a step S7, a check is made whether a predetermined conditionspecifying a relation between A0 and A1 is satisfied. In detail, it ischecked as to whether a condition

0.9A 1≦A 0≦1.1 A 1  (1)

is met. If this condition is met, it is ascertained that the bar code issuccessfully read while the bar-code reader 1 has no movement relativeto the bar code 7. If the condition (1) is not satisfied, the proceduregoes to a step S9.

At the step S8 when it is decided that no bar code is demodulated at thestep S3, a check is made whether the bar-code label (the bar code of thestep S1 in particular) has gone out of the sensor readable range of thebar-code reader 1. This check can be made, for example, by looking intowhether a data pattern obtained from a scan shows a sign of a bar code.Even if no bar code is demodulated, it is ascertained that the bar-codelabel has not yet gone out of the range as long as a patternsuspiciously resembling a bar code is obtained. In this case, theprocedure goes back to the step S3. If the bar-code label has gone outof the range, the procedure goes to the step S9.

At the step S9, all the bar-code data obtained so far is eliminated, anda next read operation is started. This step S9 is performed when adecision has been made that the bar-code reader 1 is still movingrelative to the bar code 7, and that the bar-code reader 1 has alreadypassed over a first bar code.

The decision made at the step S7, on the other hand, is based on whetherthe sum of the count numbers with respect to the four pieces of data isthe same between the two demodulated bar codes. If the bar-code reader 1has relative movement, the sum of the four preceding pieces of datashould exhibit a difference between the two demodulated bar codes. Ifthe condition (1) is satisfied, on the other hand, the bar-code reader 1should be in no motion relative to the bar code 7.

The condition (1) includes a tolerance range of ±10% in consideration ofprobable errors included in a data-read process. Alternately, acondition may be provided as:

A 0=A 1  (2)

as having no tolerance range. Conversely, the tolerance range may befurther enlarged to endure larger errors.

FIG. 5 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention.

At a step S1 immediately after a start of a read operation, a check ismade whether a detected bar code is demodulated. At a step S2, k is setto 0. At a step S3, a sum (Ak) of J0 (e.g., four) pieces of data iscalculated, where the J0 pieces of data immediately precede thedemodulated bar code. This calculation is the same as that of FIG. 4.

At a step S4, a check is made whether another bar code is demodulated.If it is, the procedure goes to a step S5, where a check is made whetherthe bar code demodulated at the step S1 and the bar code demodulated atthe step S4 are obtained by the same scan beam. If they are obtained indifferent scans, the procedure goes back to the step S4.

If the two bar codes are obtained by the same scan beam, the proceduregoes to a step S6, where a check is made whether the demodulated dataobtained at the step S1 and the demodulated data obtained at the step S4are the same. If they are not, the procedure goes to a step S12.

If the two demodulated data are the same, the procedure goes to a stepS7, where a sum (Ak+1) of J1 (e.g., four) pieces of data immediatelypreceding the bar code of the step S4 is calculated. At a step S8, acheck is made whether a predetermined condition specifying a relationbetween Ak and Ak+1 is satisfied. In detail, it is checked as to whethera condition

0.9Ak+1≦Ak≦1.1 Ak+1  (3)

is met. If the condition (3) is not satisfied, it is ascertained thatthe bar-code reader 1 is in relative motion against the bar code 7, andthe procedure goes to a step S12. If the condition (3) is met, theprocedure goes to a step S9, where k is set to k+1. At a step S10, acheck is made whether k is equal to 5. If it is, this means that thesteps S4 through S8 are repeated five times. In this case, it isascertained that the read operation has been successful.

If k has not yet reached 5 at the step S10, the procedure goes back tothe step S4.

In the previous embodiment of FIG. 4, the read operation is regarded asa success when the sum of data pieces preceding a bar code satisfies apredetermined condition. In the embodiment of FIG. 5, however, the readoperation is regarded as a success only when five sums satisfy apredetermined condition. That is, stricter conditions are imposed in thecase of FIG. 5. In other words, the embodiment of FIG. 5 can offerhigher reliability than the embodiment of FIG. 4.

Ak used in the condition (3) at the step S8 may be replaced by any oneof A0 through Ak−1 previously obtained. A due consideration has to begiven, however, to maintaining the same conditions over a series ofchecks. To this end, a substitute for Ak in the condition (3) should bethe same over the series of checks. This is because use of differentvalues over the series of checks at the step S8 may result inpropagation of errors, which undermine the reliability of the readoperation.

FIG. 6 is a flowchart of a process of reading a bar code according toyet another embodiment of the present invention. The process of FIG. 6is a variation of that of FIG. 4. In FIG. 4, a sum of count numbers isobtained with respect to pieces of data immediately preceding thedemodulated data. In FIG. 6, on the other hand, a sum of count numbersis obtained in respect to data pieces immediately following thedemodulated data.

At a step S1 immediately after a start of a read operation, a check ismade whether a detected bar code is demodulated. If it is, the proceduregoes to a step S2. Otherwise, the step S1 is repeated.

At the step S2, a sum (B0) of L0 pieces of data is calculated, where theL0 pieces of data are provided immediately after the demodulated barcode. In the example of FIG. 6, L0 is four, and B0 is a sum of countnumbers with respect to the four pieces of data.

At a step S3, a check is made whether another bar code is demodulated.If it is, the procedure goes to a step S4. Otherwise, the procedure goesto a step S8.

At the step S4, a check is made whether the bar code demodulated at thestep S1 and the bar code demodulated at the step S3 are obtained by thesame scan beam. If they are obtained by the same scan beam, theprocedure goes to a step S5. Otherwise, the procedure goes back to thestep S3.

At the step S5, a check is made whether the demodulated data obtained atthe step S1 and the demodulated data obtained at the step S3 are thesame. If they are not, it is ascertained that the two demodulated dataare obtained as a result of demodulating two different bar codes. Inthis case, the procedure goes to a step S9. If the two demodulated dataare the same, the procedure goes to a step S6.

At the step S6, a sum (B1) of L1 pieces of data immediately followingthe bar code of the step S3 is calculated. In this example, L1 is fouras in the step S2, and B1 is a sum of the count numbers with respect tothe four pieces of the data.

At a step S7, a check is made whether a predetermined conditionspecifying a relation between B0 and B1 is satisfied. In detail, it ischecked as to whether a condition

0.9B 1≦B 0≦1.1 B 1  (4)

is met. If-this condition is met, it is ascertained that the bar code issuccessfully read while the bar-code reader 1 has no movement relativeto the bar code 7. If the condition (1) is not satisfied, the proceduregoes to a step S9.

At the step S8 when it is decided that no bar code is demodulated at thestep S3, a check is made whether the bar-code label has gone out of thesensor readable range of the bar-code reader 1. This check can be made,for example, by looking into whether a data pattern obtained from a scanshows a sign of a bar code. Even if no bar code is demodulated, it isascertained that the bar-code label has not yet gone out of the range aslong as a pattern suspiciously resembling a bar code is obtained. Inthis case, the procedure goes back to the step S3. If the bar-code labelhas gone out of the range, the procedure goes to the step S9.

At the step S9, all the bar-code data obtained so far is eliminated, anda next read operation is started. This step S9 is performed when adecision has been made that the bar-code reader 1 is still movingrelative to the bar code 7, and that the bar-code reader 1 has alreadypassed over a first bar code.

The condition (4) includes a tolerance range of ±10% in consideration ofprobable errors included in a data-read process. Alternately, acondition may be provided as:

B 0=B 1  (5)

as having no tolerance range. Conversely, the tolerance range may befurther enlarged to endure larger errors.

FIG. 7 is a flowchart of a process of reading a bar code according tostill another embodiment of the present invention. The process of FIG. 7is a variation of that of FIG. 5. In FIG. 5, a sum of count numbers isobtained with respect to pieces of data immediately preceding thedemodulated data. In FIG. 7, on the other hand, a sum of count numbersis obtained in respect to data pieces immediately following thedemodulated data.

At a step S1 immediately after a start of a read operation, a check ismade whether a detected bar code is demodulated. At a step S2, k is setto 0. At a step S3, a sum (Bk) of L0 (e.g., four) pieces of data iscalculated, where the L0 pieces of data immediately follow thedemodulated bar code.

At a step S4, a check is made whether another bar code is demodulated.If it is, the procedure goes to a step S5, where a check is made whetherthe bar code demodulated at the step S1 and the bar code demodulated atthe step S4 are obtained by the same scan beam. If they are obtained indifferent scans, the procedure goes back to the step S4.

If the two bar codes are obtained by the same scan beam, the proceduregoes to a step S6, where a check is made whether the demodulated dataobtained at the step S1 and the demodulated data obtained at the step S4are the same. If they are not, the procedure goes to a step S12.

If the two demodulated data are the same, the procedure goes to a stepS7, where a sum (Bk+1) of L1 (e.g., four) pieces of data immediatelyfollowing the bar code of the step S4 is calculated. At a step S8, acheck is made whether a predetermined condition specifying a relationbetween Bk and Bk+1 is satisfied. In detail, it is checked as to whethera condition

0.9Bk+1≦Bk≦1.1 Bk+1  (6)

is met. If the condition (6) is not satisfied, it is ascertained thatthe bar-code reader 1 is in relative motion against the bar code 7, andthe procedure goes to a step S12. If the condition (6) is met, theprocedure goes to a step S9, where k is set to k+1. At a step S10, acheck is made whether k is equal to 5. If it is, this means that thesteps S4 through S8 are repeated five times. In this case, it: isascertained that the read operation has been successful.

If k has not yet reached 5 at the step S10, the procedure goes back tothe step S4.

Bk used in the condition (6) at the step S8 may be replaced by any oneof B0 through Bk−1 previously obtained. A due consideration has to begiven, however, to maintaining the same conditions over a series ofchecks. To this end, a substitute for Bk in the condition (6) should bethe same over the series of checks. This is because use of differentvalues over the series of checks at the step S8 may result inpropagation of errors, which undermine the reliability of the readoperation.

FIG. 8 is a flowchart of a process of reading a bar code according to afurther embodiment of the present invention. The embodiment of FIG. 8 isa combination of the embodiment shown in FIG. 4 and the embodiment shownin FIG. 6. In this embodiment shown in FIG. 8, a sum of data lengths isobtained with respect to each of data sets provided before and after abar code. Based on the sums of the respective data sets, a check is madeas to whether the bar-code reader is in relative motion against a barcode, thereby enhancing reliability of the data-read operation.

At a step S1 immediately after a start of a read operation, a check ismade whether a detected bar code is demodulated. If it is, the proceduregoes to a step S2. Otherwise, the step S1 is repeated.

At the step S2, a sum (A0) of count numbers is calculated with respectto J1 (e.g., four) pieces of data, which are provided immediately beforethe demodulated bar code. At a step S3, a sum (B0) of count numbers iscalculated with respect to L0 (e.g., four) pieces of data, which areprovided immediately after the demodulated bar code.

At a step S4, a check is made whether another bar code is demodulated.If it is not, the procedure goes to a step S11, where a check is madewhether the bar-code label has gone out of the scan range. If thebar-code label has gone out of the scan range, it is ascertained thatthe bar-code reader 1 is in motion relative to the bar code 7. In thiscase, the procedure goes to a step S12, where all the data obtained sofar is discarded, and a next read operation is started.

If it turns out at the step S4 that another bar code is demodulated, theprocedure goes to a step S5, where a check is made whether the bar codedemodulated at the step S1 and the bar code demodulated at the step S4are obtained by the same scan beam. If they are obtained by the samescan beam, the procedure goes to a step S6. Otherwise, the proceduregoes back to the step S4.

At the step S6, a check is made whether the demodulated data obtained atthe step S1 and the demodulated data obtained at the step S4 are thesame. If they are not, it is ascertained that the two demodulated dataare obtained as a result of demodulating two different bar codes. Inthis case, the procedure goes to a step S12. If the two demodulated dataare the same, the procedure goes to a step S7. At the step S7, a sum(A1) of J0 (e.g., four) pieces of data immediately preceding the barcode of the step S4 is calculated. At a step S8, a sum (B1) of L1 (e.g.,four) pieces of data immediately following the bar-code of the step S4is calculated.

At a step S9, a check is made whether a predetermined conditionspecifying a relation between A0 and A1 is satisfied. In detail, it ischecked as to whether a condition

0.9A 1≦A 0≦1.1A 1  (7)

is met. If this condition is not satisfied, it is ascertained that thebar-code reader 1 has movement relative to the bar code 7, and theprocedure goes to a step S12. If the condition (7) is met, the proceduregoes to a step S10.

At a step S10, a check is made whether a predetermined conditionspecifying a relation between B0 and B1 is satisfied. In detail, it ischecked as to whether a condition

0.9B 1≦B 0≦1.1B 1  (8)

is met. If this condition is not satisfied, the procedure goes to thestep S12. If the condition (8) is satisfied, this means that thebar-code reader 1 stands still relative to the bar code 7, indicating asuccess completion of the read operation.

As described above, according to the embodiment of FIG. 8, the countnumbers of the two data sets provided before and after the bar code arechecked as to whether the predetermined conditions are satisfied, sothat double checks are enforced in deciding whether the bar-code readershows movement relative to the bar code. Because of this, the bar-codedata obtained in this embodiment is highly reliable.

In FIG. 8, an order in which the steps S7 through S10 are performed mayvary. For example, the step S9 may be performed immediately after thestep S7 and before the step S8. This arrangement allows the step S8 tobe skipped if the condition of the step S9 is not satisfied. By the sametoken, the order of the entire procedure may be changed withoutrequiring modification to each step.

FIG. 9 is a flowchart of a process of reading a bar code according to ayet further embodiment of the present invention. The embodiment of FIG.9 is a combination of the embodiment shown in FIG. 5 and the embodimentshown in FIG. 7.

At a step S1 immediately after a start of a read operation, a check ismade whether a detected bar code is demodulated. At a step S2, k is setto 0. At a step S3, a sum (Ak) of count numbers is calculated withrespect to J1 (e.g., four) pieces of data, which immediately precede thedemodulated bar code. At a step S3, a sum (Bk) of count numbers iscalculated with respect to L0 (e.g., four) pieces of data, whichimmediately follow the demodulated bar code.

At a step S5, a check is made whether another bar code is demodulated.If it is not, the procedure goes to a step S14, where a check is madewhether the bar-code label has gone out of the scan range. If it hasnot, the procedure goes back to the step S5. If the bar-code label hasgone out of the scan range, it is ascertained that the bar-code reader 1is in motion relative to the bar code 7. In this case, the proceduregoes to a step S15, where all the data obtained so far is discarded, anda next read operation is started.

If it turns out at the step S5 that another bar code is demodulated, theprocedure goes to a step S6, where a check is made whether the bar codedemodulated at the step S1 and the bar code demodulated at the step S5are obtained by the same scan beam. If they are obtained by the samescan beam, the procedure goes to a step S7. Otherwise, the proceduregoes back to the step S5.

At the step S7, a check is made Whether the demodulated data obtained atthe step S1 and the demodulated data obtained at the step S5 are thesame. If they are not, the procedure goes to the step S15, with anassumption that the bar-code reader 1 and the bar code 7 are in relativemotion. If the two demodulated data are the same, the procedure goes toa step S8.

At the step S8, a sum (Ak+1) of count numbers is calculated with respectto J0 (e.g., four) pieces of data immediately preceding the bar code ofthe step S5. At the step S9, a sum (Bk+1) of count numbers is calculatedwith respect to L1 (e.g., four) pieces of data immediately following thebar code of the step S5.

At a step S10, a check is made whether a predetermined conditionspecifying a relation between Ak and Ak+1 is satisfied. In detail, it ischecked as to whether a condition

0.9Ak+1≦Ak≦1.1Ak+1  (9)

is met. If this condition is not satisfied, the procedure goes to thestep S15. If the condition (9) is met, the procedure goes to a step S11.

At the step S11, a check is made whether a predetermined conditionspecifying a relation between Bk and Bk+1 is satisfied. In detail, it ischecked as to whether a condition

0.9 Bk+1≦Bk≦1.1 Bk+1  (10)

is met. If this condition is not satisfied, the procedure goes to thestep S15. If the condition (10) is satisfied, the procedure goes to astep S12.

At the step S12, k is incremented by 1. At a step S13, a check is madewhether k is equal to 5. If it is, i.e., if the checks on the countnumbers are made five times, this means that the bar-code reader 1 andthe bar code 7 exhibit no relative motion, indicating a successfulcompletion of the read operation. If k is smaller than 5, the proceduregoes back to the step S5, and repeats the following steps.

FIG. 10 is a flowchart of a process of reading a bar code according to avariation of the embodiment of FIG. 9. In the embodiment of FIG. 9, thesum of data pieces is calculated at the steps S8 and S9, respectively,with respect to data sets provided before and after the demodulated barcode of the step S5.

In order to reduce the amount of processing time required for the readoperation, it is preferable to omit as many steps as possible. In theembodiment of FIG. 10, the steps S8 through S11 are provided in adifferent order from that of FIG. 9.

In FIG. 10, a step S8 is performed after it turns out at a step S7 thatthe same demodulated data as the previous data is obtained. At the stepS8, a sum (Bk+1) of count numbers is obtained with respect to four datapieces provided immediately after the bar code. At a step S9, a check ismade whether k is zero.

If k is zero, this means that a check has not been made with respect tothe sums of the data pieces provided before and after the bar code,wherein the check is to compare these sums between the demodulated dataof the step S1 and the demodulated data of the step S5. In this case,the procedure goes to a step S12 by skipping steps S10 and S11. At thestep S12, a check is made whether the sum (Bk) obtained for the firstdemodulated data and the sum (Bk+1) obtained for the second demodulateddata satisfy a predetermined condition. Namely, a sum (A1) of the datapieces immediately preceding the second demodulated data is notcalculated in this case.

If k is not zero, this means that a check has already been made at leastonce with check results indicating that the sum of data piecesimmediately following the bar code is the same between the firstdemodulated data and the second demodulated data. In this case, theprocedure goes to the step S10, where a sum of count numbers is obtainedwith respect to four data pieces immediately preceding the bar code.Then, at the step S11, a check is made whether the sum obtained for thefirst demodulated data and the sum obtained for the second demodulateddata satisfy a predetermined condition.

FIG. 11 is a flowchart of a process of reading a bar code according to avariation of the embodiment of FIG. 10. In FIG. 11, data processing ofdata pieces immediately preceding the second bar code and dataprocessing of data pieces immediately following the second bar code areexchanged with each other. Other steps are the same as those of FIG. 10,and a description thereof will be omitted.

FIG. 12 is a flowchart of a process which forms a core portion of thefollowing embodiments.

At a step S1, a check is made whether a bar code is demodulated.

At a step S2, the number U of detached “effective” bars and spacesimmediately preceding the bar code is counted within a predeterminedscan range. Here, “bars” refer to what are detached as black stripes ofthe bar code, and “spaces” refer to what are detached as white stripesof the bar code patterns what are detected as effective bar code stripesand spaces. Also, the predetermined scan range is a scan range of a scanbeam which is used for scanning the bar code demodulated at the step S1.

In bar-code readers, a motor sensor as shown in FIG. 1 can provide anindication as to what range is being scanned by a scan beam emitted bythe bar-code reader. When a plurality of scan beams are emitted one byone, an indication is provided as to which one of the scan beam is beingemitted and what range is being scanned by the emitted scan beam. Inother words, it is possible to define a scan range as required at thestep S2, because it is easy to check whether a scan beam is scanning thepredetermined scan range.

At a step S3, a check is made whether the number U obtained at the stepS2 is smaller than or equal to a predetermined number C (C=3 in theexample of FIG. 12). If the number U exceeds the number C, the proceduregoes back to the step S1 to repeat the described steps.

If the number U is no bigger than C, the read operation is regarded ashaving finished in success.

As previously described, effective bars and spaces surrounding the barcode data are detected because there exist shadows, coherentcharacteristics of laser beams, and the like when there is only a blankarea around the bar code. Under some controlled circumstances, it ispossible to place a limit, which the number of effective bars and spacesdetected, despite the lack of any surrounding printed patterns, does notexceed. Use of such a limit allows a decision to be made as to whetherthe bar code and the bar-code reader are in relative motion. Further, apredetermined number of bars and spaces may be printed on the left sideand the right side of a bar code for the purpose of making an easierdecision.

FIG. 13 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention. In FIG. 13, the procedureof FIG. 12 is incorporated.

Steps S1 through S3 of FIG. 13 are the same as the steps of FIG. 12.

At a step S4, I is set to 1.

At a step S5, a check is made whether another bar code is demodulated.If it is not, the procedure goes to a step S12, where a check is madewhether a bar-code label has gone out of the sensor readable range. Onemay assume that a bar code of this bar-code label is the bar code whichis demodulated at the step S1.

If it turns out at the step S12 that the bar-code label has not gone outof the range, the procedure goes back to the step S5. This case can beregarded as an indication that the bar code demodulated at the step S1still remains in the sensor readable range despite a failure of anattempt to demodulate the bar code the second time due to some reasonssuch as errors involved in the modulation process. In this case,therefore, it is ascertained that the bar-code reader 1 and the bar code7 are stationary relative to each other.

If it turns out at the step S12 that the bar-code label has gone out ofthe range, it is ascertained that the bar-code reader 1 is in relativemotion with respect to the bar code 7, and the procedure goes to a stepS13. At the step S13, all the data obtained so far is discarded, and theprocedure goes to the step S1 to start a next read operation.

If the step S5 indicates that another bar code is demodulated, theprocedure goes to a step S6, where a check is made whether the bar codesdemodulated at the steps S1 and S5 are obtained by the same scan (e.g.,scanned by the same scan beam scanning the same area). This is anappropriate check point when the read operation requires that aparticular beam be used for reading a bar-code menu. If the bar codesare not obtained by the same scan beam, the procedure goes back to thestep S5 since required conditions for reading a bar-code menu are notsatisfied.

If the step S6 indicates that the bar codes are obtained by the samescan beam, the procedure goes to a step S7. At the step S7, a check ismade whether the demodulated data of the step S1 is the same as thedemodulated data of the step S5. This check is made based on astraightforward comparison between the two sets of data.

If the two sets of data are not the same, this means that the bar codedemodulated at the step S1 is a different bar code from that of the stepS5. In this case, the procedure goes to the step S13 since the bar-codereader 1 is believed to be moving relative to the bar code 7.

If the two sets of data are the same, the procedure goes to a step S8.At the step S8, the number U of bars and spaces immediately precedingthe bar code is obtained within the predetermined scan range. This stepperforms substantially the same process as the step S2.

At a step S9, a comparison is made to decide whether the number Uobtained at the step S8 is smaller or equal to a predetermined number D(e.g., 3). If the number U exceeds the number D, the procedure goes tothe step S13.

If the number U is no larger than the number D, I is incremented by 1 ata step S10. At a step S11, a check is made whether I is equal to 4. Ifit is, this means that the demodulated data is obtained four times whilethe number U is no larger than 3 in each case. It is ascertained,therefore, that the bar-code reader 1 exhibits no movement relative tothe bar code 7, and that the read operation has successfully ended. If Iis not equal to 4, on the other hand, this means that there is notsufficient data to find that the bar-code reader 1 is in no motionrelative to the bar code 7. In this case, therefore, the procedure goesback to the step S5 to repeat the steps following the step S5.

FIG. 14 is a flowchart showing a variation of the embodiment of FIG. 12.The process of FIG. 14 differs from that of FIG. 12 only in thefollowing point. That is, the process of FIG. 12 obtains the number U ofthe bars and spaces immediately preceding the bar code, whereas theprocess of FIG. 14 obtains the number of bars and spaces immediatelyfollowing the bar code. In the process of FIG. 14, the obtained numberis compared with a predetermined number E (e.g., 3).

FIG. 15 is a flowchart of a process of reading a bar code according to avariation of the embodiment of FIG. 13. The process of FIG. 15 differsfrom that of FIG. 13 only in the following point. That is, the processof FIG. 13 obtains the number U of the bars and spaces immediatelypreceding the bar code, whereas the process of FIG. 15 obtains thenumber of bars and spaces immediately following the bar code. In theprocess of FIG. 15, the obtained number is compared with a predeterminednumber F (e.g., 3).

FIG. 16 is a flowchart of a process which is a combination of theprocess of FIG. 12 and the process of FIG. 14. In the process of FIG. 12or FIG. 14, the number of bars and spaces is taken into considerationwith respect to only one side of the bar code, i.e., a side before thebar code or a side after the bar code. However, relative movementbetween the bar-code reader and the bar code is not restricted to onedirection, but exhibits a 2-dimensional shift. Use of the number of barsand spaces on one side of the bar code may not be sufficient for thepurpose of finding the relative movement.

The process of FIG. 16 copes with this problem. In FIG. 16, the numberof bars and spaces is obtained with respect to each side of the barcode. If it is appropriate to assume that relative movement between thebar-code reader and the bar code brings about an increase in the numberof bars and spaces on at least one side of the bar code, the process ofFIG. 16 should provide an appropriate check on the relative movement. Inthe process of FIG. 12 or FIG. 14, on the other hand, a change in thenumber of bars and spaces may be overlooked if this change takes placeon the side which is not monitored.

In FIG. 16, a step S1 makes a check as to whether a bar code isdemodulated, and, then, a step S2 calculates the number U of bars andspaces immediately preceding the demodulated bar code within apredetermined scan range. At a step S3, the number U is compared with apredetermined number C (e.g., 3). If the number U does not exceed thenumber C, it is ascertained that the required condition for reading abar code is not satisfied, and the procedure goes back to the step S1.

If the number U is no larger than the number C, a step S4 calculates thenumber U of bars and spaces immediately following the bar code withinthe predetermined range. At a step S5, the number U is compared with apredetermined number E (e.g, 3) to decide which one of the numbers isgreater than the other.

If the number U is no greater than the number E, it is ascertained thatthe read operation has completed in success. If the number U is greaterthan E, it is ascertained that the required condition for reading thebar code is not satisfied, and the procedure goes back to the step S1 torepeat the above-mentioned steps.

It should be noted that the steps S2 through S5 may be provided in adifferent order.

FIG. 17 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention. The embodiment of FIG. 17incorporates the process of FIG. 16.

After a start of the read operation, a step S1 makes a check as towhether a bar code is demodulated. A step S2 obtains the number U ofbars and spaces immediately preceding the demodulated bar code within apredetermined scan range. At a step S3, the number U is compared with apredetermined number D (e.g., 3) to determine which one of the numbersis greater than the other.

If the number U exceeds the number D, the procedure goes back to thestep Si. In the number U is not greater than the number D, the proceduregoes to a step S4, where the number U of bars and spaces immediatelyfollowing the bar code is obtained within the predetermined range. At astep S5, the number U is compared with a predetermined number F (e.g, 3)to decide which one of the numbers is greater than the other.

If the number U is greater than F, the procedure goes back to the stepS1. If the number U is not greater than the number F, I is set to 1 at astep S6.

At a step S7, a check is made whether another bar code is demodulated,i.e., whether a bar code different from that of step S1 is obtained. Ifit is not, the procedure goes to a step S12, where a check is madewhether a bar-code label has gone out of the sensor readable range. Ifit turns out at the step S12 that the bar-code label has not gone out ofthe range, the procedure goes back to the step S7.

If it turns out at the step S12 that the bar-code label has gone out ofthe range, it is ascertained that the bar-code reader 1 is in relativemotion with respect to the bar code 7, and the procedure goes to a stepS13. At the step S13, all the data obtained so far is discarded, and theprocedure goes to the step S1 to start a next read operation.

If the step S7 indicates that another bar code is demodulated, theprocedure goes to a step S8, where a check is made whether the bar codesdemodulated at the steps S1 and S7 are obtained by the same scan beam.If the bar codes are not obtained by the same scan beam, the proceduregoes back to the step S7.

If the step S8 indicates that the bar codes are obtained by the samescan beam, the procedure goes to a step S9. At the step S9, a check ismade whether the demodulated data of the step S1 is the same as thedemodulated data of the step S7. If the two sets of data are not thesame, the procedure goes to a step S13 since the bar-code reader 1 isbelieved to be moving relative to the bar code 7.

If the two sets of data are the same, the procedure goes to a step S10.At the step S10, the number U of bars and spaces immediately precedingthe bar code of the step S7 is obtained within the predetermined scanrange.

At a step S11, a comparison is made to decide whether the number Uobtained at the step S10 is smaller or equal to a predetermined number D(e.g., 3). If the number U exceeds the number D, the procedure goes tothe step S13. If the number U is no larger than the number D, theprocedure goes to a step S14.

At a step S14, the number U of bars and spaces immediately following thebar code of the step S7 is obtained within the predetermined scan range.At a step S15, a comparison is made to decide whether the number Uobtained at the step S14 is greater than a predetermined number F (e.g.,3).

If the number U exceeds the number F, the procedure goes to the stepS13. If the number U is no larger than the number F, the procedure goesto a step S16, where I is incremented by 1. At a step S17, a check ismade whether I is equal to 4.

If it is, this means that the demodulated data is obtained four timeswhile the number U is no larger than 3 in each case with respect to bothsides of the bar code. It is ascertained, therefore, that the bar-codereader 1 exhibits no movement relative to the bar code 7, and that theread operation has successfully ended. If I is not equal to 4, on theother hand, this means that there is not sufficient data to find thatthe bar-code reader 1 is in no motion relative to the bar code 7. Inthis case, therefore, the procedure goes back to the step S7 to repeatthe steps following the step S7.

In this manner, a plurality of data checks are conducted in the processof FIG. 17, so that check results regarding relative movement betweenthe bar-code reader and the bar code are more reliable that in the caseof FIG. 14.

FIG. 18 is a flowchart of a process of reading a bar code according to avariation of the embodiment of FIG. 17. In FIG. 18, the number of barsand spaces immediately preceding and following a bar code is obtainedwhen the bar code is demodulated for the first time, but only a portionfollowing a bar code is taken into account in counting the number ofbars and spaces when bar codes are demodulated at the second andfollowing occasions. In the same manner, FIG. 19 is a flowchart of aprocess of reading a bar code according to a variation of the embodimentof FIG. 17, and shows a case in which only a portion immediatelypreceding bar codes is taken into account when these bar codes areobtained by demodulation at the second and following circumstances.

FIG. 20 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention. This embodiment employs abar-code reader which emits two types of beam patterns A and B. Forexample, the beam pattern A is suitable when the bar-code reader is usedas a fixedly mounted device, and is comprised of a plurality of scanbeams emitted in multiple directions from the scan window. Here, thescan pattern of multiple directions preferably cross each other. On theother hand, the beam pattern B is suited for the purpose of readingbar-code menus or the like, and is comprised of only one scan beamemitted in one direction from the scan window, or may include additionalscan beams which are parallel to that scan beam.

At the time when bar codes are read in a normal operation, the bar-codereader emits the beam pattern A.

At a step S1, upon a start of the operation of the bar-code reader, thebeam pattern A is selected so as to emit the beam pattern A from thescan window of the bar-code reader.

The bar-code reader is provided with a button for switching the beampattern. This button is provided at a convenient position on thebar-code reader as shown in FIG. 2 such that the button is easy tooperate when the bar-code reader is held in a hand.

At a step S2, a check is made whether the button is pressed. Theoperator of the bar-code reader presses the-button when the operatorwishes to read a bar code on a bar-code menu.

When the button is not pressed, the procedure goes to a step S7, where acheck is made as to whether demodulation of a bar code is completed. Ifit is not completed, the procedure goes back to the step S2 to monitorthe button status. If the demodulation is completed, the procedure goesto a step S8, where the demodulated data is transmitted. In this case,the bar-code reader does not have to be motionless relative to the barcode, so that no check is made with regard to the movement of thebar-code reader.

At a step S3 when the button is pressed at the step S2, the beam patternB is selected so that a scan beam is emitted from the scan window onlyin one direction. At a step S4, a check is made whether demodulation ofa bar code is finished. If it is finished, the procedure goes to a stepS9, where the demodulated data is transmitted.

When no bar code is demodulated or when the process at the step S9 isfinished, a check is made at a step S5 as to whether the button isreleased. If the button is not released, the procedure goes back to thestep S4.

If the step S5 finds that the button is released, a check is made at astep S6 as to whether a one-second time period has passed. If it haspassed, the procedure goes back to the step S1, and the beam pattern Ais selected again. Until the passage of the one-second time period, thecheck at the step S6 is repeated.

It is assumed that a bar-code menu is to be read when the beam pattern Bis used. Because of this, the bar-code demodulation process at the stepS4 checks relative motion between the bar-code reader and the bar code.If it is found that the bar-code reader exhibits no motion relative tothe bar code, an operation to read the bar code is continued so as toobtain demodulated data. On the other hand, if it is ascertained duringthe process at the step S4 that the bar-code reader and the bar code arein relative motion with each other, obtained data is discarded. In orderto check the movement of the bar-code reader, the demodulation processdescribed in the previous embodiments may be used. Alternately, otherrelevant methods may be used for the check, and there is no restrictionimposed on types of methods to be used.

Immediately prior to the step S6, the beam pattern B, which is suitablefor reading a bar-code menu, is emitted and scanned in one direction. Ifthe beam pattern is switched to the beam pattern A without any intervalimmediately after the release of the button, bar codes on the bar-codemenu will be scanned by the beam pattern A. Since the beam pattern A iscomprised of a plurality of scan beams in multiple directions, undesiredbar codes will certainly be picked up by the scans.

In consideration of this, this embodiment waits a predetermined timeperiod upon the release of the button before switching the beam pattern,thereby avoiding the above-identified problem. The demodulation processat the step S2 reads and demodulates a bar code regardless of whetherthere is relative movement between the bar-code reader and the bar code.If the beam pattern is switched during a time when the bar-code readeris being swept over the bar-code menu, irrelevant bar codes are bound tobe detected. Delaying the switching of the beam pattern by apredetermined time period, therefore, should be quite effective insecuring reliability.

During the waiting period of the step S6, the operator takes that thebar-code reading operation has already finished. In consideration ofthis, the bar-code reading process is stopped during the predeterminedtime period assigned for the switching of the beam pattern. That is,even if a bar code is scanned during this time period, obtained data isregarded as invalid. In this manner, it is possible to avoid such aninstance in which a bar code is unexpectedly read.

FIG. 21 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention.

At a step S1, a count number I is set to zero upon a start of abar-code-read operation. The count number I indicates how may times abar-code-read operation is performed.

At a step S2, a timer is started. This timer goes off when a time periodT1 passes. At a step S3, a check is made whether four or more pieces ofdemodulated data have been obtained and these pieces of demodulated dataare the same. That is, for example, the procedure of FIG. 17 may beperformed.

If four or more pieces of demodulated data identical to each other areobtained, it is ascertained that the read operation is successful. Thatis, the demodulated data is transmitted at the step S10. If the numberof data pieces identical to each other is smaller than four, a check ismade at a step S4 as to whether the timer detects an end of the timeperiod T1. If the time period T1 has not yet passed, the procedure goesback to the step S3.

If the step S4 finds that the time period T1 has already passed, a checkis made at a step S5 as to whether one or more (but smaller than four)pieces of demodulated data identical to each other are obtained. If theyare not obtained, this means that no demodulated data is obtained duringthe time period T1. In this case, at a step S12, a check is made whetherfive or more pieces of demodulated data identical to each other areobtained in total during the first and following bar-code-readoperations. If they are obtained (i.e., at least five pieces ofidentical data are obtained), the read operation is regarded assuccessful and the demodulated data is transmitted at a step S13.

If the check at the step S5 gives an affirmative answer, it means thatat least one piece of demodulated data is obtained during the timeperiod T1. This case should be in a better condition in terms ofdemodulated-data detection than the case in which the check at the stepS5 does not give an affirmative answer. At a step S6, a check is madewhether the pieces of demodulated data obtained during the lastbar-code-read operation (i.e., those obtained during the last timeperiod T1) are the same as those obtained in all the previousbar-code-read operations. If they are not the same, the procedure goesback to the step S1 to repeat the following processes. If the obtainedpieces of the demodulated data are the same as the previous pieces, thecount number I is incremented by 1 at a step S7.

At a step S8, a check is made whether the count number I has becomethree. If it has, the entire read operation is regarded as successful,and the demodulated data is transmitted at a step S12. In this case, oneor more pieces of demodulated data identical to each other have beenobtained at least three times in a row, so that it is likely that thesame bar code has been repeatedly demodulated. In this case, the entireread operation is regarded as a success despite a lack of the number ofdata pieces obtained during each loop (each bar-code-read operation).

If the count number I is smaller than three at the step S8, theprocedure goes back to the step S2 to repeat the following process.

In the procedure of FIG. 21, conditions used for deciding whether theread operation is successful vary, depending on the number of theobtained pieces of demodulated data. Such changes in conditions arenecessary to ensure reliability of the read operation. When thecondition stipulated at the step S5 is not satisfied, no demodulateddata may be obtained during a given time period T1, so that the piecesof demodulated data offer only a limited level of reliability. When thecondition of the step S5 is met, at least one piece of demodulated datais obtained during each time period T1. In such a case, it is morelikely that the pieces of demodulated data are obtained from the samebar code. In consideration of these, it is reasonable to changeconditions for deciding whether the read operation is successful betweenthe former case and the latter case.

The procedure shown in FIG. 21 is devised to cope with each of these twocases.

FIG. 22 is a flowchart of a process of reading a bar code according toanother embodiment of the present invention.

After a start of a read operation, at a step S1, a check is made whethera bar code is demodulated. If it is, the procedure goes to a step S2.Otherwise, the procedure goes back to repeat the step S1.

At the step S2, a sum Y0 of widths of bars and spaces forming thedemodulated bar code is obtained. Here, the sum Y0 is represented by acount number.

At a step S3, a check is made whether another bar code is demodulated.If it is not, the procedure goes to a step S8, where a check is made asto whether the bar code label has gone out of the scan range. If it hasgone out of the range, all the demodulated data is discarded at a stepS9 before the procedure goes back to the step S1.

If another bar code is demodulated at the step S3, a check is made at astep S4 as to whether the demodulated-data of the step S3 and thedemodulated data of the step S1 are obtained by the same scan (by thesame scan beam). If they are not, the procedure goes back to the stepS3.

If the step S4 finds that the two pieces of the demodulated data areobtained by the same scan beam, a check is made at a step S5 as towhether the demodulated data obtained at the step S1 and the demodulateddata obtained at the step S3 are the same. If they are not, it isascertained that there is a relative motion between the bar-code readerand the bar code. In this case, the procedure goes to the step S9. Ifthe two demodulated data are the same, the procedure goes to a step S6.

At the step S6, a sum Y1 of widths of bars and spaces is obtained withregard to the data demodulated at the step S3. At a step S7, acomparison is made between Y0 and Y1.

A width of a bar code detected by the bar-code reader depends on adistance between the bar-code reader and the detected bar code. Theshorter the distance, the wider the detected width of the bar code. Thelonger the distance, the narrower the detected width of the bar code.

Drawing on this fact, a comparison of bar-code widths between twodemodulated bar codes obtained at different timings gives an indicationas to whether the bar-code reader and the bar code are in motionrelative to each other. That is, relative movement can be detected basedon a difference in distances.

If no substantial change is present with regard to a distance betweenthe bar-code reader and the bar code, the obtained widths of bar codesshould exhibit no substantial difference. The embodiment shown in FIG.22 draws on this fact.

At the step S7, a check is made as to whether the condition

0.9Y 1≦Y 0≦1.1Y 1

is satisfied. If this is satisfied, it is ascertained that there is norelative movement between the bar-code reader and the bar code, and theread operation is regarded as successful. If the value of the sum Y0does not fall within the above-identified range, it means that thebar-code reader is in motion so that a distance from the bar code isincreased or decreased.

A 10-% tolerance range is provided for the above-mentioned condition ofthe sums Y0 and Y1. Alternately, no tolerance range is put in place sothat a condition Y0=Y1 may be used. It is difficult, however, for anoperator holding the bar-code reader to keep the bar-code readerabsolutely still, so that the check at the step S7 should take intoaccount a certain amount of errors. If no error is accepted, there maybe a case in which no bar code can be read from the bar-code menu.

The tolerance range provided for the check at the step S7 may bebroadened. This case, however, may results in a read operation beingregarded as successful even when the bar-code reader is shifted to suchan extent that the obtained data should be treated as invalid data.

The tolerance range may be decided by taking into consideration variousfactors regarding operations of the device.

FIG. 23 is a flowchart of a process of reading a bar code according to avariation of the embodiment of FIG. 22. In FIG. 22, a decision onvalidity of demodulated data is made based on a comparison of bar-codewidths between the bar code obtained at the step S1 and the bar codeobtained at the step S3. On the other hand, the embodiment of FIG. 23checks the validity based on comparisons of bar-code widths with regardto three or more bar codes.

At a step S1 in FIG. 23, after a start of a read operation, a: check ismade whether a bar code is demodulated. If it is, the procedure goes toa step S2. Otherwise, the procedure goes back to repeat the step S1.

At the step S2, a count number I is set to zero. At a step S3, a sum Y0of widths of bars and spaces forming the demodulated bar code isobtained.

At a step S4 following the step S3, a check is made whether another barcode is demodulated. If it is not, the procedure goes to a step S11,where a check is made as to whether the bar-code label has gone out ofthe scan range. If it has not gone out of the range, the procedure goesback to the step S4.

If the bar-code label has gone out of the range, it is fair to concludethat the bar-code reader is in motion relative to the bar code. In thiscase, all the demodulated data so far obtained is discarded at a stepS12 so as to invalidate the read operation, and, then, the proceduregoes back to the step S1

If another bar code is demodulated at the step S4, a check is made at astep S5 as to whether the demodulated data of the step S4 and thepreviously demodulated data (the demodulated data of the step S1 whenthe step S5 is first performed) are obtained by the same scan beam. Ifthey are obtained by different scan beams (i.e., scan beams in differentdirections), the procedure goes back to the step S4 after discarding thedemodulated data obtained at the step S4.

If the step S5 finds that the two pieces of the demodulated data areobtained by the same scan beam, a check is made at a step S6 as towhether the demodulated data obtained at the step S4 and the previouslydemodulated data are the same. If they are not, it is ascertained thattwo different bar codes are demodulated. In this case, the proceduregoes to the step S12.

If the two demodulated data are the same, the procedure goes to a stepS7, where a sum Y_(I+1) of widths of bars and spaces is obtained withregard to the data demodulated at the step S4.

At a step S8, a comparison is made between the-sum Y_(I) of the alreadydemodulated data (e.g., Y0 obtained at the step S3) and the sum Y_(I+1).In detail, a check is made whether a relation

0.9Y _(I+1) ≦Y _(I) ≦Y _(I+1)

is satisfied. As can be seen, a 10-% tolerance level is provided.

The above process at the step S8 determines whether Y_(I) and Y_(I) aresubstantially the same width so as to check if the bar-code reader andthe bar code are in relative motion with each other.

If the above relation regarding Y_(I) and Y_(I+1) is not satisfied, itis ascertained that the bar-code reader is moving relative to the barcode, and the procedure goes to the step S12.

If the above relation between Y_(I) and Y_(I+1) is met, this means thatthe bar-code reader and the bar code have no relative motion withrespect to each other. In this case, the count number I is incrementedby 1 at a step S9, and, then, a check is made at a step S10 as towhether the count number I has reached a count of 5.

If the count number I has reached 5, this is an indication that thesteps S4 through S10 are repeated five times consecutively. Sincebar-codes substantially identical to each other are demodulated fivetimes in row, it is ascertained that there is no relative motion betweenthe bar-code reader and the bar code, and the read operation is treatedas a success. In this case, five bar codes having the same width areobtained. Since a larger number of data points is obtained compared tothe case of FIG. 22, more reliable check results are obtained withregard to the movement of the bar-code reader.

If the count number has not reached 5 at the step S10, the proceduregoes back to the step S4 to repeat the step S4 and the following steps.

The sum Y_(I) used in the check of the step S8 may be any one of Y0through Y_(I). That is, the sum Y_(I) may be a sum of any demodulateddata as long as such demodulated data is obtained prior to thedemodulated data of the step S4. Further, one and the same sum may beselected from the sums Y0 through Y_(I), and may be used repeatedly inthe check at the step S8.

Further, the present invention is not limited to these embodiments, butvarious variations and modifications may be made without departing fromthe scope of the present invention.

What is claimed is:
 1. A device for reading a bar code, comprising: ascan unit selectively producing a first scan pattern of a scan beam forreading a bar code in a first mode and a second pattern of a scan beamfor reading a bar code in a second mode, different from the first mode;a switch, manually operated by an operator, causing the scan unit toselectively produce the second scan pattern for scanning a bar code; anda controller, in response to a detected release of the switch and at apredetermined time period thereafter, terminating scanning of the barcode with the second scan pattern.
 2. The device as recited in claim 1,wherein, after a predetermined time period following release of theswitch, the controller causes the scan unit to produce the first scanpattern for resumed reading of a bar code.
 3. The device as recited inclaim 2, wherein the controller terminates further bar code readingusing the second scan pattern during the predetermined time period. 4.The device as recited in claim 1, further comprising: a detectordetecting movement of the device relatively to the bar code whilescanning the bar code with the second scan pattern; and the controller,in response to detection of the relative movement, discards bar codedata derived when scanning the bar code with the second scan pattern. 5.The device as recited in claim 4, wherein the second scan patterncomprises one or more parallel scan beams.
 6. The device as recited inclaim 1, wherein the first scan pattern employs a greater number ofscanning beams than the second scan pattern.
 7. The device as recited inclaim 6, wherein the first scan pattern comprises a plurality of scanbeams emitted in multiple directions.
 8. The device as recited in claim6, wherein the first scan pattern is suitable for use in a fixedlymounted scanning device.
 9. The device as recited in claim 1, whereinthe second scan pattern employs a single scanning beam.
 10. The deviceas recited in claim 9, wherein the second scan pattern is suitable foruse in a hand held scanning device.
 11. The method as recited in claim1, where: the device is a hand-held device, moveable by an operator to ascanning position for reading a bar code.
 12. The method as recited inclaim 11, wherein: the scanning position is a fixed position, unmovablerelatively to the bar code being read.
 13. The method as recited inclaim 12, wherein: upon detection of the movement of the device relativeto the scanning position, discarding the bar code data derived whenscanning the bar code with the second scan pattern.
 14. A method forreading a bar code, comprising the steps of: selectively producing afirst scan pattern of a scan beam for reading a bar code in a first modeand a second scan pattern of the scan beam for reading a bar code in asecond mode; selecting the second scan pattern by manual actuation of aswitch and, while the switch is actuated, scanning a bar code with thesecond scan pattern; determining whether the switch is released; andafter a predetermined time period following release of the switch,selecting the first scan pattern for reading a bar code.
 15. The deviceas recited in claim 14, wherein the first scan pattern employs a greaternumber of scanning beams than the second scan pattern.
 16. The method asrecited in claim 14, wherein the second pattern employs one or moreparallel scanning beams.
 17. The method as recited in claim 14, whereinthe scan beam is proceeded by a scanning device, further comprising:detecting movement of the scanning device relatively to a bar code beingscanned with the second scan pattern; and upon detection of the relativemovement, discarding bar code data derived when scanning the bar codewith the second scan pattern.
 18. The method as recited in claim 17,wherein: the scanning device is a hand-held device, moveable by anoperator to the scanning position.
 19. The method as recited in claim18, wherein: the scanning position is fixed relatively to the bar codebeing scanned.
 20. The method as recited in claim 19, wherein: upondetection of the movement of the device relative to the scanningposition, discarding the bar code data derived when scanning the barcode with the second scan pattern.
 21. The method as recited in claim14, further comprising: terminating further bar code reading using thesecond scan pattern during the predetermined time period.
 22. A mediumstoring a program readable by computer for controlling a computer toread a bar code by a scanning device, including responding to manualactuation of a switch on a scanning device, by: selectively producing afirst scan pattern of a scan beam for reading a bar code in a first modeand a second scan pattern of the scan beam for reading a bar code in asecond mode; selecting the second scan pattern by manual actuation of aswitch and, while the switch is actuated, scanning a bar code with thesecond scan pattern; determining whether the switch is released; andafter a predetermined time period following release of the switch,selecting the first scan pattern for reading a bar code.
 23. The memorymedium storing a program as recited by claim 22, wherein the first scanpattern employs a greater number of scanning beams than the second scanpattern.
 24. The memory medium storing a program as recited by claim 22,wherein the second pattern employs one or more parallel scanning beams.25. The memory medium storing a program as recited by claim 22, whereinthe scan beam is proceeded by a scanning device, further comprising:detecting movement of the scanning device relatively to a bar code beingscanned with the second scan pattern; and upon detection of the relativemovement, discarding bar code data derived when scanning the bar codewith the second scan pattern.
 26. The memory medium storing a program asrecited by claim 25, wherein: the scanning device is a hand-held device,moveable by an operator to the scanning position.
 27. The memory mediumstoring a program as recited by claim 26, wherein: the scanning positionis fixed relatively to the bar code being scanned.
 28. The memory mediumstoring a program as recited by claim 27, upon detection of the movementof the device relative to the scanning position, discarding the bar codedata derived when scanning the bar code with the second scan pattern.29. The memory medium storing a program as recited by claim 22, furthercomprising: terminating further bar code reading using the second scanpattern during the predetermined time period.